Skip to main content

자릿수 더하기

문제 설명

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.

예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

제한 조건

  • N의 범위 : 100,000,000 이하의 자연수

입출력 예

Nanswer
1236
98724
입출력 예 설명

입출력 예 #1

문제의 예시와 같습니다.

입출력 예 #2

9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.

풀이

풀이
def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10

return sum

일단 전체적인 로직은 다음과 같습니다.

  • 일의 자리를 구해서 sum 변수에 누적한다.
  • n을 n의 일의 자리를 제거한 값으로 갱신한다.
  • 이 과정을 n이 0이 될 때까지 반복한다.

일의 자리를 구하는 방법은 n을 10으로 나눈 나머지를 구하면 됩니다.

그리고 일의 자리를 제거하는 방법은 n을 10으로 나눈 몫으로 갱신해 주면 됩니다.

입출력 예 #2번을 예로 들어보겠습니다.

def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10

return sum

987은 0보다 크기 때문에 while문 안으로 들어갑니다.

def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10

return sum

앞에서 n의 일의 자리는 n을 10으로 나눈 나머지를 구하면 된다고 했습니다.

987 % 10은 7이므로 일의 자리인 7을 sum 변수에 누적합니다.

def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10

return sum

일의 자리를 제거하는 방법은 n을 10으로 나눈 몫으로 갱신해 주면 된다고 했습니다.

987 // 10은 98이므로 n은 일의 자리 7이 제거된 98이 됩니다.

지금부터는 이 과정의 반복이므로 빠르게 진행해 보겠습니다.

def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10

return sum

98은 0보다 크기 때문에 while문 안으로 들어갑니다.

def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10

return sum

98 % 10은 8이므로 8을 sum 변수에 누적합니다.

sum에는 이전에 7이 저장되어 있기 때문에 15가 됩니다.

def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10

return sum

98 // 10은 9가 되므로 n은 9로 갱신됩니다.

def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10

return sum

9는 0보다 크기 때문에 while문 안으로 들어갑니다.

def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10

return sum

9 % 10은 9이므로 9를 sum 변수에 누적합니다.

sum에는 이전에 15가 저장되어 있기 때문에 24가 됩니다.

def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10

return sum

9 // 10은 0이므로 n은 0으로 갱신됩니다.

def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10

return sum

n이 0이 되었기 때문에 더 이상 while문을 진행하지 않습니다.

성공적으로 n의 각 자릿수의 합을 구했습니다.